package com.xzcedu.homework;

import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Map;

/**
 * @author 徐州城
 * @version 1.0
 */
public class Homework02 {
    public static void main(String[] args) throws Exception {

        /**
         * 练习2：利用反射和File完成以下功能
         * 1. 利用Class类的forName方法得到File类的Class对象
         * 2. 在控制台打印File类的所有构造器
         * 3. 通过newInstance的方法创建File对象，并创建E: \mynew.txt文件
         * 提示：创建文件的正常写法如下
         * File file = new File("d:\\aa.txt");
         * file.createNewFile();
         */

        //1. 得到File 的Class对象
        Class<File> fileClass = File.class;

        //2. 打印出File类的所有构造器
        Constructor<?>[] declaredConstructors = fileClass.getDeclaredConstructors();
        //遍历输出
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            System.out.println("File的构造器 = " + declaredConstructor);
        }

        //3. 创建File对象，并创建 E:\ mynew.txt文件
        String filePath = "e:\\mynew.txt";
        //指定得到public java.io.File(java.long.String)
        Constructor<File> declaredConstructor = fileClass.getDeclaredConstructor(String.class);
        //创建文件
        File file = declaredConstructor.newInstance(filePath);

        //4. 得到createNewFile 的方法对象
        Method createNewFile = fileClass.getMethod("createNewFile");
        createNewFile.invoke(file);//创建文件 调用的是createNewFile

        System.out.println("创建文件成功...");
    }
}

